// import com.alibaba.druid.FastsqlException;
// import com.alibaba.druid.sql.ast.SQLExpr*;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
// import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor*;

// import java.io.IOException;
#pragma once
#include <string>
#include <list>
#include <sstream>
#include "../SQLObjectImpl.h"
#include "../SQLReplaceable.h"

class SQLExpr;
class SQLASTVisitor;
class Object;

class SQLUpdateSetItem :virtual public SQLObjectImpl ,virtual public SQLReplaceable {
  public:
    SQLExpr_ptr column;
    SQLExpr_ptr value;

    SQLUpdateSetItem() ;
  SHAREDOBJECT(SQLUpdateSetItem);

    SQLExpr_ptr getColumn();

    void cloneTo(SQLUpdateSetItem* x) ;

    
    // SQLUpdateSetItem* clone();
    virtual SQLObject_ptr clone();
    void setColumn(SQLExpr_ptr x) ;

    SQLExpr_ptr getValue();

    void setValue(SQLExpr_ptr value) ;

    void output(std::stringstream *  buf) ;

    
    void accept0(SQLASTVisitor_ptr  visitor);

    BOOL_ptr columnMatch(string_ptr  column) ;

    BOOL_ptr columnMatch(long columnHash) ;

    
    BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target) ;

    
    bool equals(Object_ptr  o) ;

    
    int hashCode() ;
};
